/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-9-21 上午8:55 Created by dwzhang
 */
package com.jade.bss.weixin.api.pay.protocol;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import com.jade.bss.weixin.api.protocol.xml.Response;

/**
 * 退款查询的响应。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-9-21 上午8:55
 */
@XmlRootElement (name = "xml")
@XmlAccessorType (XmlAccessType.FIELD)
public class RefundQueryResponse
        extends Response
{
    //微信生成的订单号，在支付通知中有返回
    @XmlElement (name = "transaction_id")
    private String transactionId;
    //商户侧传给微信的订单号
    @XmlElement (name = "out_order_no")
    private String outOrderNo;
    //商户系统内部的退款单号，商户系统内部唯一，同一退款单号多次请求只退一笔
    @XmlElement (name = "out_refund_no")
    private String outRefundNo;
    //订单总金额，单位为分，只能为整数
    @XmlElement (name = "total_fee")
    private int totalFee;
    //货币类型
    @XmlElement (name = "fee_type")
    private String feeType;
    //现金支付金额，单位为分，只能为整数
    @XmlElement (name = "cash_fee")
    private int cashFee;
    //退款笔数
    //todo 目前只定义了查询一笔退款的情况，微信的接口太变态了，需要直接解析原生的xml文件。
    @XmlElement (name = "refund_count")
    private int refundCount;
    //商户退款单号
    @XmlElement (name = "out_refund_no_0")
    private String outRefundNo0;
    //微信退款单号
    @XmlElement (name = "refund_id_0")
    private String refundId0;
    //ORIGINAL—原路退款
    //BALANCE—退回到余额
    @XmlElement (name = "refund_channel_0")
    private String refundChannel0;
    //退款总金额,单位为分,可以做部分退款
    @XmlElement (name = "refund_fee_0")
    private int refundFee0;
    //退款状态：
    //SUCCESS—退款成功
    //FAIL—退款失败
    //PROCESSING—退款处理中
    //NOTSURE—未确定，需要商户原退款单号重新发起
    //CHANGE—转入代发，退款到银行发现用户的卡作废或者冻结了，导致原路退款银行卡失败，资金回流到商户的现金帐号，
    // 需要商户人工干预，通过线下或者财付通转账的方式进行退款。
    @XmlElement (name = "refundStatus0")
    private String refundStatus0;
    //代金券或立减优惠退款金额<=退款金额，退款金额-代金券或立减优惠退款金额为现金
    @XmlElement (name = "couponRefundFee0")
    private int couponRefundFee0;
    //代金券或立减优惠使用数量 ,$n为下标,从0开始编号
    @XmlElement (name = "couponRefundCount0")
    private int couponRefundCount0;
    //批次ID ,$n为下标，$m为下标，从0开始编号
    @XmlElement (name = "coupon_refund_batch_id_0_0")
    private String couponRefundBatchId00;
    //代金券或立减优惠ID, $n为下标，$m为下标，从0开始编号
    @XmlElement (name = "coupon_refund_id_0_0")
    private String couponRefundId00;
    //单个代金券或立减优惠支付金额, $n为下标，$m为下标，从0开始编号
    @XmlElement (name = "coupon_refund_fee_0_0")
    private int couponRefundFee00;

    public String getTransactionId()
    {
        return transactionId;
    }

    public void setTransactionId(String transactionId)
    {
        this.transactionId = transactionId;
    }

    public String getOutOrderNo()
    {
        return outOrderNo;
    }

    public void setOutOrderNo(String outOrderNo)
    {
        this.outOrderNo = outOrderNo;
    }

    public String getOutRefundNo()
    {
        return outRefundNo;
    }

    public void setOutRefundNo(String outRefundNo)
    {
        this.outRefundNo = outRefundNo;
    }

    public int getTotalFee()
    {
        return totalFee;
    }

    public void setTotalFee(int totalFee)
    {
        this.totalFee = totalFee;
    }

    public String getFeeType()
    {
        return feeType;
    }

    public void setFeeType(String feeType)
    {
        this.feeType = feeType;
    }

    public int getCashFee()
    {
        return cashFee;
    }

    public void setCashFee(int cashFee)
    {
        this.cashFee = cashFee;
    }

    public int getRefundCount()
    {
        return refundCount;
    }

    public void setRefundCount(int refundCount)
    {
        this.refundCount = refundCount;
    }

    public String getOutRefundNo0()
    {
        return outRefundNo0;
    }

    public void setOutRefundNo0(String outRefundNo0)
    {
        this.outRefundNo0 = outRefundNo0;
    }

    public String getRefundId0()
    {
        return refundId0;
    }

    public void setRefundId0(String refundId0)
    {
        this.refundId0 = refundId0;
    }

    public String getRefundChannel0()
    {
        return refundChannel0;
    }

    public void setRefundChannel0(String refundChannel0)
    {
        this.refundChannel0 = refundChannel0;
    }

    public int getRefundFee0()
    {
        return refundFee0;
    }

    public void setRefundFee0(int refundFee0)
    {
        this.refundFee0 = refundFee0;
    }

    public String getRefundStatus0()
    {
        return refundStatus0;
    }

    public void setRefundStatus0(String refundStatus0)
    {
        this.refundStatus0 = refundStatus0;
    }

    public int getCouponRefundFee0()
    {
        return couponRefundFee0;
    }

    public void setCouponRefundFee0(int couponRefundFee0)
    {
        this.couponRefundFee0 = couponRefundFee0;
    }

    public int getCouponRefundCount0()
    {
        return couponRefundCount0;
    }

    public void setCouponRefundCount0(int couponRefundCount0)
    {
        this.couponRefundCount0 = couponRefundCount0;
    }

    public String getCouponRefundBatchId00()
    {
        return couponRefundBatchId00;
    }

    public void setCouponRefundBatchId00(String couponRefundBatchId00)
    {
        this.couponRefundBatchId00 = couponRefundBatchId00;
    }

    public String getCouponRefundId00()
    {
        return couponRefundId00;
    }

    public void setCouponRefundId00(String couponRefundId00)
    {
        this.couponRefundId00 = couponRefundId00;
    }

    public int getCouponRefundFee00()
    {
        return couponRefundFee00;
    }

    public void setCouponRefundFee00(int couponRefundFee00)
    {
        this.couponRefundFee00 = couponRefundFee00;
    }
}
